#ifndef INSDRIVERPUBLISHER_H
#define INSDRIVERPUBLISHER_H
#include <iostream>
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <sensor_msgs/NavSatFix.h>
#include <sensor_msgs/Imu.h>
#include <nav_msgs/Odometry.h>
#include <geometry_msgs/PoseStamped.h>
#include <geometry_msgs/TwistStamped.h>

#include <tf/tf.h>
#include <tf/transform_datatypes.h>
#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
#include <tf2_ros/buffer.h>
#include <tf2_ros/transform_listener.h>
#include <tf2_ros/transform_broadcaster.h>
#include <tf2_eigen/tf2_eigen.h>
#include <XmlRpcException.h>

#include "INS570D/INS570D_Define.h"
#include "M2/INSM2_Define.h"
#include "INS_STATUS.h"

class insDriverPublisher
{
public:
    insDriverPublisher(ros::NodeHandle &nh);
    void pubGPSFIX(INS_STATUS &ins_);
    void pubGPSFIX(RTK_STATUS &gps_);
    void pubINS(INS_STATUS &ins_);
    void pubIMU(INS_STATUS &ins_);
    void pubVEL(INS_STATUS &ins_);
    void publish(INS_STATUS &ins_);
    void publish(INS_STATUS &ins_,INS_STATUS &imu_ ,RTK_STATUS &rtk_);

private:
    ros::Publisher rtk_pub_,gps_pub_,ins_pub_,imu_pub_,vel_pub_;
};

#endif // INSDRIVERPUBLISHER_H
